//
//  BaseViewController.swift
//  SinaWeiBo
//
//  Created by Leon 笑 竹 on 2017/7/31.
//  Copyright © 2017年 Leon 笑 竹. All rights reserved.
//

import UIKit

//MARK:- 所有主控制器和基类控制器
class BaseViewController: UIViewController {
    
    ///设置改变访客视图的字典
    var visitorInfoDict : [String : String]?
    
    //判断用户是否登录
    var isLogon =  true
    
    //初始化一个导航条
    lazy var naviBar = UINavigationBar.init(frame: CGRect(x: 0, y: 0, width:UIScreen.cz_screenWidth(), height: 64))
    
    //设置一个tableView
    var tableView : UITableView?
    
    //刷新控件
    var refreshControl : UIRefreshControl?
    
    //定义一个刷新变量
    var isPullUp  = false
    
    /// 自定义导航条目
    lazy var naviItem = UINavigationItem()

    override func viewDidLoad() {
        super.viewDidLoad()

        //取消自动缩进
        self.automaticallyAdjustsScrollViewInsets = false
        
         setupUI()
        NetworkManager.shared.access_Token != nil  ? loadData() : ()
    }
    
    //重写title方法
    override var title: String?{
        didSet{
            naviItem.title = title
        }
    }
    
    //加载数据源方法
    func loadData(){
        refreshControl?.endRefreshing()
    }
}

//设置访客视图按钮的点击方法
extension BaseViewController {
    
    @objc fileprivate func loginAction() {
        
        print("用户登录")
    }
    
    @objc fileprivate func registerAction(){
        
        print("用户注册")
    }
}

//MARK:- 设置界面
extension BaseViewController{
    
      fileprivate  func setupUI(){
        
            self.view.backgroundColor = UIColor.cz_random()
            
            setupNaviBar()
            
//            isLogon ? setupTableView() : setupVisitorView()
        
        //判断何时进入页面
        (NetworkManager.shared.access_Token != nil) ? setupTableView() : setupVisitorView()
        
    }
    
    //设置tableview是否出现
     func setupTableView(){
        
        tableView = UITableView(frame: view.bounds, style: .plain)
        tableView?.delegate = self
        tableView?.dataSource = self
        tableView?.contentInset = UIEdgeInsets(top: naviBar.bounds.height,
                                                                         left: 0,
                                                                         bottom:tabBarController?.tabBar.bounds.height ?? 49,
                                                                         right: 0)
        //设置刷新控件
        //1.初始化控件
        refreshControl = UIRefreshControl()
        tableView?.addSubview(refreshControl!)
        //添加刷新事件
        refreshControl?.addTarget(self, action: #selector(loadData), for: .valueChanged)
        view.insertSubview(tableView!, belowSubview: naviBar)
  
    }
    
    /// 设置访客视图
    fileprivate  func setupVisitorView() {
        
        let visitorView = VisitorView()
        visitorView.frame = CGRect(x: 0, y: 0, width: UIScreen.cz_screenWidth(), height: UIScreen.cz_screenHeight())
        
        visitorView.visitorInfo = visitorInfoDict
        //添加按钮的点击方法
        visitorView.registerBtn.addTarget(self, action: #selector(registerAction), for: .touchUpInside)
        visitorView.loginBtn.addTarget(self, action: #selector(loginAction), for: .touchUpInside)
        
        //设置访客视图navi上的按钮
        naviItem.leftBarButtonItem = UIBarButtonItem.init(title: "注册", style: .plain, target: self, action: #selector(registerAction))
        naviItem.rightBarButtonItem = UIBarButtonItem.init(title: "登录", style: .plain, target: self, action: #selector(loginAction))
        
        self.view.insertSubview(visitorView, belowSubview: naviBar)
    }
    
    //设置导航栏
    fileprivate func setupNaviBar(){
        
        //添加导航条
        self.view.addSubview(naviBar)
        //将item设置给bar
        naviBar.items = [naviItem]
        //naviBar渲染颜色，避免曝光过度
        naviBar.barTintColor = UIColor.cz_color(withHex: 0xf6f6f6)
        //设置navibar的标题颜色
        naviBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.darkGray]
        //设置文字颜色，左右两个按钮
        naviBar.tintColor = UIColor.orange
    }
}

//MARK:- UITableViewDelegate,UITableViewDataSource
extension BaseViewController: UITableViewDelegate,UITableViewDataSource{
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        return UITableViewCell()
    }
    
    //将要显示cell的时候
    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        
        let row = indexPath.row
        let section = tableView.numberOfSections - 1
        
        if row < 0 || section < 0 {
            return
        }
        
        //行数
        let count = tableView.numberOfRows(inSection: section)
        
        if row == (count - 1) && !isPullUp {
//            print("上拉刷新") 
            isPullUp = true
            loadData()
        }
        
//        print("section - \(section)")
        
    }
}

